// 引入工具类
const { userStore } = require('../../utils/store')

Page({
  data: {
    username: '',
    password: '',
    loading: false,
    usernameError: '',
    passwordError: ''
  },

  onLoad() {
    console.log('登录页面加载')
  },

  // 处理登录
  async handleLogin() {
    // 清除之前的错误信息
    this.setData({
      usernameError: '',
      passwordError: ''
    })

    // 表单验证
    if (!this.validateForm()) {
      return
    }

    this.setData({ loading: true })

    try {
      const loginData = {
        username: this.data.username.trim(),
        password: this.data.password.trim()
      }

      console.log('开始登录:', loginData.username)

      const result = await userStore.login(loginData)

      console.log('登录结果:', result)

      if (result.code === 200) {
        // 验证用户信息是否正确保存
        const savedUserInfo = userStore.getUserInfo()
        console.log('登录成功后的用户信息:', savedUserInfo)

        if (savedUserInfo && savedUserInfo.isLoggedIn) {
          wx.showToast({
            title: '登录成功',
            icon: 'success'
          })

          // 延迟跳转，让用户看到成功提示，并确保状态已更新
          setTimeout(() => {
            // 检查是否有页面栈，如果有则返回，否则跳转到首页
            const pages = getCurrentPages()
            if (pages.length > 1) {
              wx.navigateBack()
            } else {
              wx.switchTab({
                url: '/pages/index/index'
              })
            }
          }, 1500)
        } else {
          throw new Error('登录状态保存失败，请重试')
        }
      } else {
        throw new Error(result.msg || result.message || '登录失败')
      }

    } catch (error) {
      console.error('登录失败:', error)
      wx.showToast({
        title: error.message || '登录失败，请检查账号密码',
        icon: 'error',
        duration: 2000
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  // 表单验证
  validateForm() {
    let isValid = true

    if (!this.data.username.trim()) {
      this.setData({ usernameError: '请输入学号或工号' })
      isValid = false
    }

    if (!this.data.password.trim()) {
      this.setData({ passwordError: '请输入密码' })
      isValid = false
    }

    if (this.data.password.length < 6) {
      this.setData({ passwordError: '密码长度不能少于6位' })
      isValid = false
    }

    return isValid
  }
})
